using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO.Ports;
using System.Windows.Forms;
using Infragistics.Win.UltraWinTabControl;

namespace PluginFrame
{
	public interface IPcrSystemService
	{
		bool IsConnectedInstrument { get; }

		void AnalysisActiveForm();

		IPcrDataFile GetDefaultPcrDataFile();

		IPcrDataFile GetActiveFormPcrDataFile(Form activeForm);

		void SetActiveFormExperimentTabActive(Form activeForm, IPcrExperiment pcrExperiment);

		IPcrStructure GetActiveFormActivePcrStructure(Form activeForm);

		IPcrExperiment GetActiveFormCurrentExperiment(Form activeForm);

		string GetActiveFormProjectFolder(Form activeForm);

		void CheckTempPcrFileFolder();

		void SetKey(string keyName, string value);

		string GetKey(string keyName);

		void RefreshNewExperimentRealTimeCurve(IPcrExperiment pcrExperiment, bool isRefreshCurrentForm, int currentTabIndex);

		void RefreshNewExperimentRealTimeMeltingCurve(IPcrExperiment pcrExperiment, bool isRefreshCurrentForm, int currentTabIndex);

		void RefreshNewExperimentRealTimeChartYAxis();

		bool RefreshNewExperimentRealTimeChartXAxis(IPcrExperiment pcrExperiment, int tabIndex);

		bool RefreshNewExperimentRealTimeMeltingChartXAxis(IPcrExperiment pcrExperiment, int tabIndex);

		void LoadPcrProgramToActiveExperimentInPcrForm(bool isSelectProject);

		void ClearPcrProgramInActiveExperimentInPcrForm();

		bool ShowUserDialog();

		bool ChangeCurrentExperimentTabName(IPcrExperiment pcrExperiment, string experimentName, string key, bool isNewExperiment);

		void SwitchExperimentView(int experimentIndex);

		void RefreshActiveFormProjectList(int gridIndex, Guid experimentId);

		void RefreshNewExperimentOptionsDisplay();

		void SwitchStandardCurveView(string projectName, int channelIndex, string targetName);

		void ClosePcrForm(Form activeForm);

		bool MaskUnUsedSubmoduleBeforeExperiment(IPcrExperiment pcrExperiment);

		void RefreshActiveExperimentMainGridColumnDisplay(Form activeForm);

		void RefreshActiveExperimentMainGridContentDisplay(Form activeForm);

		void ShowWaitHintForm(BackgroundWorker bk, string label);

		void SetOpenHotLidMenuEnabled(bool isEnabled, int hotlidIndex);

		void ExportRawDataToExcel(IPcrExperiment pcrExperiment);

		bool LoadPcrExperimentFile(IPcrDataFile pcrDataFile);

		void AddPcrCellsToRealTimeCurve(List<IPcrCell> pcrCells, IPcrExperiment pcrExperiment, bool isToClearChart, int currentTabIndex);

		void AddPcrCellsToResultCurve(List<IPcrCell> pcrCells, IPcrExperiment pcrExperiment, bool isToClearChart, int currentTabIndex);

		bool ProccessBeforeClosePcrForm(Form pcrForm, bool isShowCloseExperiment);

		void CheckInterruptExperiment();

		bool RefreshChannelChanged(bool channelSelected, int channelIndex, bool isSingleSelection);

		void SetRightViewCurveLegendVisible(bool isVisible);

		void SetRightViewCurveLegendTab(int tabIndex);

		void RefreshChannelMenuStatus(int[] channelStatus);

		void SwitchChannelMenuFromPcrForm();

		void SwitchPcrFormMenuToolBar(bool isNotReset);

		bool UpdateActiveAbsoluteRightPanel();

		void RefreshActiveChildFormRightPanelView(Form activeForm);

		void SelectRightPanelProject(Form activeForm, string projectName, string itemName, int channel);

		bool CloseExperimentInNewForm(string experimentName, bool isShowMessage);

		void OpenExperimentResultAfterExperiment(IPcrDataFile pcrDataFile);

		string ReadInstrumentData(IPcrStructure pcrStructure, SerialPort serialPort);

		void SetRealTimeAmplificationTabEnable(IPcrExperiment pcrExperiment, int currentTabIndex, bool isEnabled);

		void SetRealTimeRawTabEnable(IPcrExperiment pcrExperiment, int currentTabIndex, bool isEnabled);

		void SetRealTimeMeltingTabEnable(IPcrExperiment pcrExperiment, int currentTabIndex, bool isEnabled);

		void SetRealTimeMeltingTabVisible(IPcrExperiment pcrExperiment, int currentTabIndex, bool isVisible);

		void SetRealTimeMeltingTabActivation(IPcrExperiment pcrExperiment, int currentTabIndex);

		void SetRealTimeRawTabActivation(IPcrExperiment pcrExperiment, int currentTabIndex);

		void SetRealTimeAmplificationTabVisible(IPcrExperiment pcrExperiment, int currentTabIndex, bool isVisible);

		bool IsFindNewPcrExperiment();

		bool IsFindNewPcrExperiment(out IPcrStructure pcrStructure);

		bool GetActiveExperimentAmplifcationRange(out double xMax, out double xMin, out double yMax, out double yMin);

		bool GetActiveExperimentCurveRange(string pluginName, out double xMax, out double xMin, out double yMax, out double yMin);

		bool GetActiveExperimentCurveYAxialIsLog(string pluginName);

		void RefreshInformationMenuAndToolBar();

		void RefreshAnalysisMenuAndToolBar();

		bool ExecutePcrFormClose(bool isShowMessage, IPcrExperiment pcrExperiment);

		Form FindPcrExperimentMdiChild(IPcrExperiment pcrExperiment);

		List<UltraTab> GetActiveExperimentStandardCurveTabs();

		void RefreshActiveChildFormRealTimeCurveBeforeExperiment(Form activeForm, IPcrExperiment pcrExperiment, bool isRefreshCurrentTab, int currentTabIndex);

		UltraTabControl GetActiveFormExperimenTypeTab(Form activeForm);

		bool FindRunningPcrForm();

		void SetActiveFormRightPanelVisible(bool isVisible);

		void RefreshActiveExperimentViewGridMultiCellsPlacement(Form activeForm);

		bool UpdateActiveAbsoluteRightPanelProject(List<IPcrExperimentProject> projects);

		void RefreshActiveFormGridCurveDisplay(Form activeForm);

		void RefreshAllelePointColorType(bool isClearSelection);

		void SetHRMManualGroup(IPcrCell pcrCell, IHRMExperiment hrmExperiment);

		void RefreshAlleleRightViewLegendText(int projectIndex);
	}
}
